using Headsight.BPMN2WF.BPMN.Model;

namespace Headsight.BPMN2WF.Transformation.Transformers.Additions
{
    /// <summary>
    /// Base implementation for <see cref="IBPMN2WFTransformation"/> implementations
    /// delegating to other <see cref="IBPMN2WFTransformation"/> instances and (eventually) decorating
    /// the delegates' results further.
    /// </summary>
    public abstract class BPMN2WFTransformationDelegateBaseImpl : IBPMN2WFTransformation
    {
        protected BPMN2WFTransformationDelegateBaseImpl(IBPMN2WFTransformation @delegate)
        {
            Delegate = @delegate;
        }

        public IBPMN2WFTransformation Delegate { get; private set; }
        
        public abstract BPMNTransformationResult Transform(IBPMN2WFTransformationContext ctx, BPMNFlowNode flowNode);
    }
}